import Vue from 'vue';

// 创建一个create函数，可以动态生成组件实例，并挂载至body上

// Component是组件配置对象
function create(Component, props) {

    // 使用vue构造函数来动态生成组件实例
    const vm = new Vue({
        render(h) {
            // console.log(h(Component, { props }))

            // h是createElement别名，可以返回一个虚拟DOM，VNode
            return h(Component, { props })
        }
    })

    // // 挂载到真实DOM
    // vm.$mount();

    // // 将生成的dom添加到body
    // document.body.appendChild(vm.$el) 


    const Ctor = Vue.extend(Component)


    const comp = new Ctor({ propsData: props })

    comp.$mount()

    document.body.appendChild(comp.$el);
    comp.remove = () => {
        document.body.removeChild(comp.$el);
        vm.$destroy();
    }
    return comp;
}


export default create;